Desbordament del buffer

Visualització d'un desbordament de memòria intermèdia de programari. Les dades s'escriuen a A, però són massa grans per cabre dins d'A, de manera que es desborden a B.

En programació i seguretat de la informació, un desbordament de memòria intermèdia o desbordament de la memòria intermèdia és una anomalia per la qual un programa escriu dades en una memòria intermèdia més enllà de la memòria assignada a la memòria intermèdia, sobrescrivint les ubicacions de memòria adjacents.[1]

Els buffers són àrees de memòria reservades per contenir dades, sovint mentre es mouen d'una secció d'un programa a una altra, o entre programes. Els desbordaments de memòria intermèdia sovint es poden desencadenar per entrades mal formades; si hom suposa que totes les entrades seran més petites que una determinada mida i la memòria intermèdia es crea per tenir aquesta mida, aleshores una transacció anòmala que produeixi més dades podria fer que escrigui més enllà del final de la memòria intermèdia. Si això sobreescriu les dades adjacents o el codi executable, això pot provocar un comportament erràtic del programa, com ara errors d'accés a la memòria, resultats incorrectes i bloquejos.[2]

L'explotació del comportament d'un desbordament de memòria intermèdia és una explotació de seguretat ben coneguda. En molts sistemes, la disposició de memòria d'un programa, o del sistema en conjunt, està ben definit. Mitjançant l'enviament de dades dissenyades per provocar un desbordament de memòria intermèdia, és possible escriure en àrees conegudes que contenen codi executable i substituir-lo per codi maliciós o sobreescriure selectivament les dades relatives a l'estat del programa, provocant, per tant, un comportament que no estava previst pel programador original. Els buffers estan molt estesos en el codi del sistema operatiu (SO), de manera que és possible fer atacs que realitzen una escalada de privilegis i obtenir accés il·limitat als recursos de l'ordinador. El famós cuc Morris el 1988 va utilitzar això com una de les seves tècniques d'atac.[3]

Els llenguatges de programació associats habitualment als desbordaments de memòria intermèdia inclouen C i C++, que no proporcionen cap protecció integrada contra l'accés o la sobreescritura de dades en cap part de la memòria i no comproven automàticament que les dades escrites en una matriu (el tipus de memòria intermèdia integrada) estiguin dins. els límits d'aquesta matriu. La comprovació de límits pot evitar desbordaments de memòria intermèdia, però requereix codi i temps de processament addicionals. Els sistemes operatius moderns utilitzen una varietat de tècniques per combatre els desbordaments de memòria intermèdia maliciós, sobretot mitjançant l'aleatorització de la disposició de la memòria o deixant deliberadament espai entre les memòries intermèdies i cercant accions que escriguin en aquestes àrees ("canaris").

  1. «What is buffer overflow?» (en anglès). https://www.cloudflare.com.+[Consulta: 10 setembre 2023].
  2. «What Is Buffer Overflow? Attacks, Types & Vulnerabilities» (en anglès). [Consulta: 10 setembre 2023].
  3. «Buffer Overflow | OWASP Foundation» (en anglès). [Consulta: 10 setembre 2023].

© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search